#title: 集成Velocity
#index:0,1
#author:wendal(wendal1985@gmail.com)

---------------------------------------------------------------------
将nutz-plugins-views加入到项目中

	手动下载地址: https://jfrog.nutz.cn/artifactory/jcenter/org/nutz/nutz-plugins-views/

	maven项目的依赖项,中央库有.

	{{{<XML>
		<dependency>
			<groupId>org.nutz</groupId>
			<artifactId>nutz-plugins-views</artifactId>
			<version>1.r.60</version>
		</dependency>
	}}}

	maven引用velocity相关jar包
	{{{<XML>
		<dependency>
			<groupId>org.apache.velocity</groupId>
			<artifactId>velocity</artifactId>
			<version>1.7</version>
		</dependency>
		<dependency>
    			<groupId>org.apache.velocity</groupId>
    			<artifactId>velocity-tools</artifactId>
    			<version>2.0</version>
		</dependency>
	}}}

---------------------------------------------------------------------
修改MainModule类,添加引用

	{{{<JAVA>
	@Views(value={VelocityViewMaker.class})
	// 其他配置,如IocBy等等
	public class MainModule {}
	}}}

---------------------------------------------------------------------
在classpath下添加velocity.properties

	{{{
	#资源加载器或加载器别名
	resource.loader = webapp
	#资源加载器类全限定名
	webapp.resource.loader.class = org.apache.velocity.tools.view.WebappResourceLoader
	#资源位置
	webapp.resource.loader.path=/WEB-INF/
	#编码
	input.encoding=UTF-8
	output.encoding=UTF-8
	#布局文件为准
	tools.view.servlet.layout.directory = layout/
	#默认布局文件名称
	tools.view.servlet.layout.default.template =default.html
	#默认错误文件名称
	tools.view.servlet.error.template =Error.vm
	tools.view.servlet.layout.default.template =Default.vm
	}}}
---------------------------------------------------------------------
web.xml配置
	{{{<XML>
	<init-param>
		<param-name>org.apache.velocity.properties</param-name><!-- 这个不能修改-->
		<param-value>velocity.properties</param-value> <!-- 对应上一步中配置文件的位置 -->
	</init-param>
	}}}
---------------------------------------------------------------------
使用方法

	User类


	{{{<JAVA>
	public class User {
		public int roleId;
		public String userName;

	public int getRoleId() {
		return roleId;
	}

	public void setRoleId(int roleId) {
		this.roleId = roleId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
	}
	}}}

	MVC类
	{{{<JAVA>
	@At("/")
	@Ok("vm:/tmpl/main.vm")
	public User main() {
		User user = new User();
		user.setUserName("nutz");
		user.setRoleId(0);
		return user;
	}
	}}}

	main.vm文件
	{{{<HTML>
	#if($!{obj.roleId} == 0)
	<li> 管理员 $!{obj.userName}</li>
	#else
	<li> 编辑 $!{obj.userName}</li>
	#end
	}}}

---------------------------------------------------------------------
更灵活的使用方法

	MVC类
	{{{<JAVA>
	@At("/")
	@Ok("vm:/tmpl/main.vm")
	public NutMap main() {
		NutMap map = new NutMap();
		map.put("site_name", "Nutz工具箱");
		User user = new User();
		user.setRoleId(0);
		user.setUserName("nutz");
		map.put("user", user);
		return map;
	}
	}}}

	main.vm文件
	{{{<HTML>
	<span> 站点名称：$!{obj.site_name}</span>
	#if($!{obj.user.roleId} == 0)
	<li> 管理员 $!{obj.user.userName}</li>
	#else
	<li> 编辑 $!{obj.user.userName}</li>
	#end
	}}}
-----------------------------------------------------------------------
可供参考的实例项目

	https://github.com/Wizzercn/NutzWk
